feat(skills): add episodic problem-framing job to the Data Workstream Coach - #2748
Conversation
… Coach - extend experiment-design with a cited problem-class framing procedure - register problem-framing in the job registry and session-state schema - attribute Google CC BY 4.0 sources and keep NEOS citation-only - add one expectation and a two-case behavior stimulus 🧭 - Generated by Copilot
…tifiers - set compound SPDX identifiers on five mixed-content skills - add a per-file license allocation table to each skill - require the compound-plus-allocation pattern in licensing posture 🔏 - Generated by Copilot
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2748 +/- ##
==========================================
+ Coverage 83.08% 83.10% +0.01%
==========================================
Files 183 181 -2
Lines 33712 33041 -671
Branches 25 25
==========================================
- Hits 28010 27458 -552
+ Misses 5699 5580 -119
Partials 3 3
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Eval Execution✅ Status: Passed — no merge-blocking failures (81 advisory assertion failure(s) present)
|
…spell The grader patterns use truncated stems so one alternation matches several word forms. Spell check read them as misspellings. 🔤 - Generated by Copilot
- add an advisory knowledge stimulus modelled on skill-vex-knowledge - close a pre-existing coverage gap the licensing change exposed - unblock the Eval Execute stimulus-presence gate 🧪 - Generated by Copilot
Katrien De Graeve (katriendg)
left a comment
There was a problem hiding this comment.
Validated throughout, changes seem complete, just a few minor comments left inline.
…ng-capability # Conflicts: # .github/agents/data-science-engineering/data-science-engineering-coach.agent.md # .github/skills/data-science/data-workstream-foundation/references/job-registry.md # .github/skills/project-planning/experiment-design/SKILL.md # docs/reference/skills/README.md # docs/reference/skills/project-planning/experiment-design.md # evals/agent-behavior/eval.yaml # evals/agent-behavior/expectations/data-science-engineering-coach.expectations.yml # evals/agent-behavior/stimuli/data-science-engineering-coach.yml
… graders - replace the two-case stimulus with one stimulus per case - drop regex case fencing; each response now carries a single case - replace the negated MVE matcher with a positive assertion - accept canonical passive non-selection wording - name problem-class framing in the experiment-design capability row 🔍 - Generated by Copilot
Description
The Data Workstream Coach could route a data scientist to feasibility, experiments, pipelines, and evaluation, but nothing owned the step before all of them: deciding what kind of data-science problem a stated business outcome actually is. A practitioner arriving with "we want to reduce churn" had no job to select. This PR closes that gap by extending capability that already exists rather than adding an eighth skill.
experiment-designnow owns a second, clearly separated procedure. Problem-class framing takes a stated business outcome, applies a per-paradigm entry test to nine candidate problem classes, orders the unresolved questions by how many candidates each answer eliminates, and returns the surviving candidates with the reasoning that kept or discarded each one. It never selects, ranks, scores, or confidence-thresholds a candidate, because the data scientist is the subject-matter expert making that call.Source treatment is deliberately layered and visible in the output. Machine-learning entry tests are paraphrased and reorganized from two Google for Developers pages licensed CC BY 4.0, with both URLs cited and the changes stated in
THIRD-PARTY-NOTICES. The NEOS Guide reserves rights, so it is cited as further reading only and the procedure states no optimization classification of its own. Everything else, including cross-paradigm routing and the broader "is this even a modelling problem" judgement, is repository-original. Every claim carries a[G],[O], or[A]label so a practitioner can see which is which.A second, unrelated commit corrects a licensing accuracy problem found while writing the attribution above. Five skills declared
license: mixed, which is not an SPDX identifier and tells a consumer nothing.references/problem-framing.mdtoexperiment-designwith a source block, provenance labels, a single pre-analysis stop, a six-step procedure, nine candidate problem classes with entry tests, a coordinator-ready gap contract, an output contract, and an explicit never-does list.experiment-designcontract so the Goal, Inputs, reference index, success criteria, constraints, ownership boundaries, stop rules, and attribution all admit problem-class framing while leaving the experiment workflow untouched. A confirmed framing request reads one file; experiment requests continue to readmve-coaching.mdorexperiment-readiness.md.problem-framingin the Data Workstream job registry asepisodic, routing toexperiment-designwith no supporting route, disambiguated it from the existingexperimentjob, and recorded two completion shapes so an unstated outcome completes as real work rather thandiscarded-cleanly.problem-framingjob slot. The state protocol requires thejobskey set to equal the registry identifiers and stops on mismatch, so registering the job without its slot would have halted every Data Workstream session rather than just framing.experiment-designcapability statements in the Data Workstream Coach so aproblem-framingroute announcement is accurate. No framing procedure, entry test, or job enumeration was imported into the agent; it stays a thin coordinator.problem-framing-job-contractexpectation and one comparative two-case stimulus. Case A withholds the business outcome and must stop with an assigned gap; Case B supplies an outcome but leaves a high-power question unresolved and must elicit, mark unknown, continue, and select nothing. Nine independent graders cover both branches, including a narrow negative grader that fails only when the response turns the missing outcome into an experiment subject.THIRD-PARTY-NOTICESwith the license URI, both source URLs, the exact usage scope, and a statement of changes.license: mixedon five skills with compound SPDX expressions and gave each a per-file license allocation table.vexisApache-2.0 AND CC-BY-4.0,privacy-standardsisCC-BY-4.0 AND CC-BY-SA-3.0,functional-plannerisCC-BY-4.0 AND CC-BY-SA-4.0,c4-architectureisCC-BY-4.0 AND MIT, andrai-standardsresolves to plainCC-BY-4.0because its sources are public-domain or paraphrase-only and add no term.ANDis the redistributor conjunction rather than a per-file claim, and removed the contradictory checklist bullet that still requiredlicense: mixed.Related Issue(s)
Closes #2747
Related to #1543
Type of Change
Select all that apply:
Code & Documentation:
Infrastructure & Configuration:
AI Artifacts:
hve-builderand addressed all actionable findings.github/instructions/*.instructions.md).github/prompts/*.prompt.md).github/agents/*.agent.md).github/skills/*/SKILL.md).github/hooks/*/*.json)evals/)Other:
.ps1,.sh,.py)Sample Prompts (for AI Artifact Contributions)
User Request:
Start a Data Workstream Coach session, then select the new job when it is offered:
Execution Flow:
data-workstream-foundationand presents the job list fromreferences/job-registry.md.problem-framingappears as anepisodicjob routing toexperiment-design. Nothing activates until the user confirms.experiment-design. Its reference index sends a confirmed framing request toreferences/problem-framing.mdand to nothing else, so experiment vetting criteria and MVE fallbacks never load.unknownonly after elicitation fails. An unanswered question never terminates the run.Output Artifacts:
A chat-rendered framing result. The framing procedure itself writes no durable file. The shape is:
Success Indicators:
experiment-designas the owner and the invocation as episodic.[G],[O], or[A]label, and no claim implies that an external standard adjudicates across paradigms.Testing
Automated validation run on this branch after rebasing onto
origin/main. Each command was run independently so a late failure could not hide behind a chained exit.npm run docs:generate:checknpm run validate:skillsnpm run lint:frontmatternpm run lint:tablesnpm run plugin:validatescripts/evals/Build-AgentBehaviorSpec.ps1 -WhatIfno driftscripts/evals/Test-EvalSpec.ps1npm run lint:md-linksci:eval:run:agentsDiff-based and manual assessments performed:
Checklist
Required Checks
AI Artifact Contributions
hve-builderreview mode to review contributionhve-builderreviewRequired Local Checks
The following local-safe validation commands must pass before merging:
npm run validate:localnpm run validate:docsnpm run spell-checknpm run lint:md-linksSecurity Considerations
scripts/security/changed)Additional Notes
On the licensing commit. It is genuinely unrelated to the framing capability and is kept as a separate commit for that reason. It was found while writing the attribution for the new Google sources:
license: mixedis not an SPDX identifier, and the frontmatter schema documents that field as one. The schema currently accepts any 1–128 character string, which is how the placeholder spread to five skills. Tightening that schema to an enum is worth a follow-up but is not attempted here.On scope discipline. The capability was deliberately built into an existing skill. No eighth Data Workstream skill was added, the seven-skill boundary contract and its expectation are untouched,
plugin.jsonis unchanged, and no new instruction file, schema, validator, dependency, or feasibility-profile version was introduced.Known residual items.
Seven-skill boundariescapability column in the job registry still describesexperiment-designin experiment-only terms. Editing that table would touch theseven-skill-boundariesexpectation, so it was intentionally left for the existing count-free-naming follow-up.THIRD-PARTY-NOTICEScarries no retrieval dates for any entry, which matches its existing convention. Retrieval dates for the new sources are recorded in the research evidence instead.🧭 - Generated by Copilot